In computer networks, a plurality of network stations are interconnected via a communications medium. For example, Ethernet is a commonly used local area network scheme in which multiple stations are connected to a single shared serial data path. These stations typically communicate with a switch located between the shared data path and the stations connected to that path. The interface device may be a Media Access Controller (MAC) which is connected between each station and the shared data path. Each network node may include a MAC which performs a number of functions involved in the transmission and reception of data packets. For example, during the transmission of data, the MAC may assemble the data to be transmitted into a packet with address and error detection fields. Conversely, during the reception of a packet, the MAC must determine whether a received packet is addressed to its station.
When all of the stations connected to the network are simultaneously operating, packet traffic on the shared serial path can be heavy with little time between packets. In typical prior art systems, each MAC includes a receive FIFO (first-in-first-out) which is used to store data captured from the shared path. As the packet passes by on the shared path, the MAC takes the serial information and assembles it into frames which are loaded frame-by-frame into a receive FIFO. As the frames are loaded, the MAC determines whether the destination address corresponds to the physical address of the MAC. If a match occurs, the MAC captures the packet. However, if there is no match, the packet is rejected and the MAC FIFO is flushed. In such prior art systems, data packets that may eventually be flushed are read. This uses bus bandwidth and may slow the system.
In other networks, a MAC may be required to receive packets on behalf of more than one station. For example, a MAC may be located within a bridge between two networks. This MAC, located within the bridge, must be able to compare the destination address in each received packet with a very large number of station addresses in the network to which it is connected. However, the MAC must make the decision before the packet has been completely received in the MAC FIFO. If the MAC has not finished its processing before the packet has been completely received, the packet may still be dumped onto the serial bus. This causes a problem if the MAC then determines that the packet should not have been received. Retracking buffer locations caused by sending such a packet causes increased processing and may delay the system.
Alternatively, if the decision is not made by the MAC before the packet is completely received, queuing problems may result since the MAC must make a decision for the frames in the order in which they are received. Further, the large number of addresses supported by a bridge MAC, or a MAC in a large network, results in an increased amount of logic contained within the MAC to support the increased number of network stations. In situations where space is at a premium, the amount of space needed to support the MAC logic may not be available.